Configuration setting

ABSTRACT

A method of defining customization for electronic content retrieved over an electronic connection ( 100,  FIG.  1 ), which retrieves electronic content from a remote server ( 110 ) to a local client ( 102 ); edits the content at the local client by a user using a WYSIWYG editor, wherein AUTHORIZED USER REQUEST PAGE 202 said editor is a standard software used for displaying of content and wherein said editing does not require installation of software requiring user authorization; and automatically generates at least one customization definition based on said editing, said customization definition suitable for automatic applying to said content.

The application claims the priority from Israel Patent Application No.158282, “Configuration Setting”, the disclosure of which is incorporatedherein by reference.

FIELD OF THE INVENTION

The present invention relates to configuration settings, for example fortransformation of HTML documents.

BACKGROUND OF THE INVENTION

HTTP content, such as, HTML or XML pages (web pages) are presented tousers by a client side web browser, such as Microsoft Internet Explorerand Mozilla. HTTP content includes elements, such as, text and pictures.Some browsers may regard HTTP content (such as HTML pages or XML pages)as a tree of elements.

Performing transformations on HTTP content results in modified HTTPcontent (modified web pages). The modified content may include changesonly to the appearance of the HTTP content. Methods and software, toperform the transformations, have been reported in the art.

Various software tools such as Microsoft Front page may be used tomodify a web page before it is placed in a web site for download.

An HTTP intermediary, such as an HTTP-proxy or a transformation proxy,can perform web page transformations. An HTTP-proxy is often used forinterfacing web sites with a client web browser. An example of anHTTP-proxy is described in http://www.ietf.org/rfc/rfc2616.txt

Several web browsers, for instance, Microsoft Internet Explorer, supportcreation of web pages. Attributes which may be set include modifyingcolors, fonts, hyper-links, and pictures. There are advantages to allowa user to create web pages using the same browser used to present theweb pages, rather than using special tools.

The MSHTML-Editing-Component of Microsoft Internet Explorer described inhttp://msdn.microsoft.com/library/default.asp?url=/workshop/browser/editing/mshtmleditor.aspcan be used to define an element or a plurality of elements as editable.

SUMMARY OF THE INVENTION

An aspect of some embodiments of the invention relates to definingchanges to be applied to electronic content, in which the content ismodified using a WYSIWYG editor and then the modifications are appliedto a subsequent requester of the content.

In an exemplary embodiment of the invention, the method of definingchanges does not require installation of special software at a usercomputer. Optionally, client-side code, such as Java script, Flash orJava may be used. Optionally, however, the code is selected so that auser with standard security settings is not required to approve of theexecution of the software. In an exemplary embodiment of the invention,neither a client nor a server needs to make changes.

Optionally, ActiveX is used even though user authorization is required.In an exemplary embodiment of the invention, only client side code whichdoes not have a danger of damaging the user computer is used. Forexample, code that executes in a sandbox is used, which machine codepossibly even if protected, is not allowed.

In an exemplary embodiment of the invention, the user computer uses astandard browser for defining changes.

In an exemplary embodiment of the invention, changes are stored at anintermediary.

Optionally, such an intermediary serves for authorization and/or otherfunctions. In an exemplary embodiment of the invention, special editingsoftware executes on the intermediary and its display is piped to theuser computer.

In an exemplary embodiment of the invention, a user modifies electroniccontent to suit his desires and code, for example downloaded code orcode at the intermediary, analyses the changes, for example by comparingthem to an un-edited version, to determine customization definitions.Optionally, a user can override these automatically derived definitions.

In an exemplary embodiment of the invention, customization definitionsinclude spatial or logical areas of the content to which rules will beapplied.

In an exemplary embodiment of the invention, different types oftranslation are applied to different parts of the document.

In an exemplary embodiment of the invention, a hierarchical objectdefining language, such as XPath is used to define what elements of ahierarchical electronic content is to be modified. Optionally, An XPathexpression is defined automatically based on a selection by a user orbased on the object that the user modified.

An aspect of some embodiments of the invention relates to supporting anon-web graphical application for editing at a client computer which theapplication executes at a remote location. In an exemplary embodiment ofthe invention, a viewer is provided at the client computer and thedisplay of the application is forwarded to the client computer.Optionally, the viewer does not require installation and/or useracquiescence, if standard security settings are used. Optionally, theusage of the application is transparent to the user, except for theactual editing.

In an exemplary embodiment of the invention, the application is executedautomatically when a user edits a document which is not originating atthe remote location. Optionally, when a user edits a page obtained froma server, the application is executed to act on a copy of the page.

There is thus provided in accordance with an exemplary embodiment of theinvention a method of defining customization for electronic contentretrieved over an electronic connection, comprising:

(a) retrieving electronic content from a remote server to a localclient;

(b) editing the content at the local client by a user using a WYSIWYGeditor, wherein said editor is a standard software used for displayingof content and wherein said editing does not require installation ofsoftware requiring user authorization; and

(c) automatically generating at least one customization definition basedon said editing, said customization definition suitable for automaticapplying to said content.

Optionally, said retrieving uses an intermediary apparatus.

In an exemplary embodiment of the invention, said intermediary is anHTTP intermediary and wherein said content is a tagged data file.Optionally, said tagged data file is in a self-describing language.

In an exemplary embodiment of the invention, said language is ahyper-text mark-up language.

In an exemplary embodiment of the invention, said editor comprises aninternet browser.

In an exemplary embodiment of the invention, automatically generatingcomprises detecting changes in said content caused by said editing,after said editing is preformed. Optionally, detecting changes comprisesdetecting changes using a hierarchical comparison of the electroniccontent before and after the editing.

In an exemplary embodiment of the invention, said intermediary comprisesa proxy.

In an exemplary embodiment of the invention, the method comprisesallowing of said editing by said intermediary. Optionally, said allowingcomprises marking at least some of said content as editable.Alternatively or additionally, said allowing comprises adding at leastone control to said content to facilitate at least one of editing andcustomization definition. Alternatively or additionally, said allowingcomprises adding at least one client side code module to said content tofacilitate at least one of editing and customization definition.

In an exemplary embodiment of the invention, said customizationdefinitions define a spatial area to be customized.

In an exemplary embodiment of the invention, the method comprisesoverriding at least one automatically generated customization definitionby said user.

In an exemplary embodiment of the invention, said editing comprisesediting without typing human understandable words.

In an exemplary embodiment of the invention, said editing comprisesediting by selection among choices.

In an exemplary embodiment of the invention, the method comprisesmanually defining at least one parameter of a customization definition.Optionally, said defining comprises defining different types oftranslation for different parts of said content.

In an exemplary embodiment of the invention, said overriding comprisesrequiring an exact match of an element of said content to a definition,for a customization to be applied.

In an exemplary embodiment of the invention, said overriding comprisesallowing a match other than a one-to-one match to a definition, for acustomization to be applied.

In an exemplary embodiment of the invention, a customization definitionis defined by a context in said content. Optionally, said context is anexpression defining elements in said content to be part of the context.Optionally, said expression is an hierarchical expression. Optionally,said expression is an XPath or XPath-like type expression. Optionally,said expression is generated automatically. Optionally, said expressionis generated in response to an editing activity.

In an exemplary embodiment of the invention, said expression isgenerated in response a marking by a user.

Optionally, a context is defined based on a spatial location, during adisplay of the content, of a label associated with an element to becustomized. Optionally, an association of a label and an element isidentified using a browser-internal script which finds spatial positionsof the labels and spatial positions of nearby elements.

In an exemplary embodiment of the invention, said intermediaryauthorizes said user to perform said editing.

In an exemplary embodiment of the invention, said intermediary executesan editing program for editing an element of said content, a display ofsaid program being provided to said client an input from said clientpassed to said program. Optionally, said intermediary limits access ofsaid user to said intermediary via said editing program.

In an exemplary embodiment of the invention, the method comprises savingat least one customization definition for later use. Optionally, themethod comprises applying said at least one definition to contentrequested by a second user. Optionally, the method comprises deciding atleast one property of said applying based on information associated witha request by said second user. Optionally, said deciding comprisesdeciding if to apply a customization definition.

In an exemplary embodiment of the invention, said deciding comprisesexamining a cookie at said second user. Optionally, said content towhich said at least one customization definition is applied is dynamiccontent including at least one element whose content changes over time.

In an exemplary embodiment of the invention, said applying comprisesdetermining a context. Optionally, determining a context comprisesevaluating an XPath or XPath-like expression.

In an exemplary embodiment of the invention, determining a contextcomprises determining spatial positions of labels associated with anelement to be modified based on the customization definitions.

There is also provided in accordance with an exemplary embodiment of theinvention, a method of editing content, comprising:

(a) requesting content from a first location;

(b) executing an editing application at a second location; and

(c) carrying out the editing at a third location, using a viewer forviewing said editing application, without installing software at thethird location other than said viewer. Optionally, said second locationcomprises an HTTP-intermediary. Optionally, said viewer comprises abrowser.

In an exemplary embodiment of the invention, said editing application isautomatically executed when a user at said third location attempts toedit an element suitable for editing by said application.

In an exemplary embodiment of the invention, said application isexecuted in a manner which at least partially protects saidHTTP-intermediary from access by said user.

There is also provided in accordance with an exemplary embodiment of theinvention, an HTTP intermediary, comprising:

(a) an HTTP connection to a server;

(b) an HTTP connection to a user;

(c) a page modifying module operative to add at least one of code andcontrols to a page requested by said user from said server, said code orcontrol adapted to facilitate at least one of editing and customizationdefinition. Optionally, the intermediate comprises a page transformeradapted to modify retrieved pages on the fly based on savedcustomization definitions.

There is also provide din accordance with an exemplary embodiment of theinvention, a browser having downloaded thereto at least one client sidecode, said client side code adapted to at least one of allow editing ofcontent and determine changes due to editing of content

BRIEF DESCRIPTION OF THE FIGURES

Non-limiting embodiments of the invention will be described withreference to the following description of exemplary embodiments, inconjunction with the figures. The figures are generally not shown toscale and any sizes are only meant to be exemplary and not necessarilylimiting. In the figures, identical structures, elements or parts thatappear in more than one figure are preferably labeled with a same orsimilar number in all the figures in which they appear, in which:

FIG. 1 shows a configuration in which some embodiments of the inventionmay be carried out, in accordance with an exemplary embodiment of theinvention;

FIG. 2 is a flow chart of an embodiment of the present invention;

FIGS. 3A and 3B are showing of a display used for configurationsettings, in accordance with an exemplary embodiment of the invention;and

FIGS. 4A-4C show (4A) an original page displayed by a normal user, (4B)during editing by an authorized user, and (4C) after applying thedefined transformations to the page when accessed by the normal userabove, according to an exemplary embodiment of the invention.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

Overview

The invention, in some embodiments thereof, generally relates toautomatically transforming an electronically accessed document, forinstance HTML pages, before the documents are presented to a user by aclient browser. Optionally, an HTTP intermediary, such as, atransformation proxy performs the transformations. Optionally, thetransformations are performed according to customization definitions.The term proxy is sometimes used instead of the term “intermediary”.

The term document refers to any document that can be presented by a webbrowser (or other display software, as described below), and mayinclude, for example, web pages, HTML pages, and XML pages. In somecases the term “web page” is used interchangeably with the term“document”.

FIG. 1 shows a configuration 100 for carrying out some embodiments ofthe invention. An end user 102 using a web browser 103 requests a webpage (e.g., using a URL) from a web server (110). Optionally, thisrequest is handled by an HTTP intermediary (106), which can be forexample a proxy server. As well known in the art, there can be variousadditional intermediate devices, which are not shown, for example,routers, cache and firewalls. The web server with the desired web pagesends the page back to the HTTP intermediary (106). At HTTP intermediary106 the page can be automatically modified according to storedcustomization definitions (107). Optionally, HTTP intermediary 106serves only as a transformation proxy. Alternatively, it may haveadditional functions (such as caching, compression and encryption).Optionally, the methods described herein is used to define parametersfor such additional functions, for example setting an allowedcompression quality degradation or using a dialog box for enteringencryption parameters.

The following description focuses on preparing a plurality ofcustomization definitions by an authorized user. Various exemplaryauthorization methods are described below. In some embodiments, noauthorization process is provided and any user may be consideredauthorized. When an authorized user connects to HTTP intermediary 106,the authorized user receives modified web pages in which elements wereoptionally made automatically editable by the HTTP intermediary and alsonew elements, such as buttons, are added. This will allow the authorizeduser, but not a non-authorized user, to create customizationdefinitions, as will be described below. Various examples ofcustomization definitions will be described below.

In an exemplary embodiment of the invention, an authorized user requestsa web page by using a web browser, and the HTTP intermediary insertsactive code, for instance JavaScript, to allow elements in the page tobecome editable. In addition the HTTP intermediary may add GUI, forinstance an “edit” button, to allow the user to edit elements. Themodified web page, which includes the added “edit” button, as well aselements from the original web page, is presented to the authorized userby a client browser.

Optionally, the edit button is used to selectively allow editing.Optionally, several edit buttons are provided. The authorized user mayselect the “edit” button, and this will enable elements to becomeeditable. After the user finishes editing the page he may save theedited page to the intermediary or locally by selecting a suitablebutton. Editing elements is done in a “what you see is what you get”(WYSIWYG) manner. The result of the editing done by the authorized usermay include customization definitions that may be saved at the HTTPintermediary. In some embodiments, what is saved is the modified page.

Exemplary Process

FIG. 2 is a flow chart 200 of an exemplary embodiment of the presentinvention. Acts 202-212 relate to customization definition and acts214-220 relate to modification of a page during delivery.

At 202, an authorized user requests a page.

At 204, intermediary 106 retrieves the page. Optionally the receivedpage or elements of it are saved at the computer the editing softwareruns. In an exemplary embodiment of the invention, intermediary 106forwards the request to server 110, optionally as is and optionallymodified, receives the page from server 110, optionally applies existingcustomizations and adds an editing GUI as described herein. Optionally,the page is retrieved from a local cache.

At 206, intermediary 106 modifies the retrieved page, for example byadding buttons, scripts and/or making elements editable.

At 208, the authorized user modifies the page and optionally views theresults in a WYSIWYG manner. In an exemplary embodiment of theinvention, the modification is by simple editing of the page in whichthe authorized user can make one or more changes in the page until thepage is “correct”.

At 210, the authorized user saves the page.

At 211, intermediary 106 optionally generalizes the modifications madeby the authorized user into customization definitions which areoptionally used for other pages.

At 212, intermediary 106 saves the modified page and/or the definitions.Optionally, the definitions are associated with certain users, forexample, certain IP addresses, geographical locations or user profiles.

Later, at 214, a regular user requests the page.

At 216, the requested page is retrieved.

At 218, intermediary 106 optionally modifies the page according to thecustomization definitions.

At 220, the modified page is sent to the user.

Each of the acts in FIG. 2 is optional. In some embodiment of thepresent invention certain acts will be carried out, and in otherembodiment of the present invention other acts from acts 202-220 will becarried out.

Exemplary Usage of Customization

In an exemplary embodiment of the invention, configuration 100 is usedwhen there exist a web site with web content provided in one languageand it is desired that a group of users not fluent in that language beable to access the content. The use of intermediary 106 allows this tobe accomplished even without any changes at the web server 110.Optionally, the generator of the original content indicates which pagesor parts of pages should be modified and/or are allowed to be modified.During translation, it may be necessary to make other changes in a page,for example, to match a cultural logic of a projected user or toaccommodate different word sizes.

Customization Indication

In an exemplary embodiment of the invention, intermediary 106 analysesretrieved web pages to determine which elements are amenable forcustomization, for example text element. Alternatively, substantiallyany element may be allowed for customization. Alternatively oradditionally, parts to be customized may be pre-indicated.

Optionally, the generator of the page includes buttons or otherindication for customization, such as suitable indicative naming ofelements (e.g., such as a name extension). Optionally, the page includesa script which selectively displays or hides the buttons depending onthe authorization of the user.

Customization

In an exemplary embodiment of the invention, intermediary 106generalizes the changes made by the authorized user into rules. Examplesof such generalized definitions include one or more of:

(a) translation (e.g., replacement of text);

(b) changing of font.

(c) changing of text direction;

(d) changing of attributes such as size, color, transparency; (e)replacement of an image;

(f) overlays that hide other elements or are transparent;

(g) scripts and client side code; and

(h) additional elements, for example, new buttons to provide help in alocal language;

In addition, for example as described below, various modifiers mayapply. For example, translation can be set to be machine translation orstatic translation. Matching of a rule may be set to be an exactmatching or an approximate matching (e.g., using wild card characters).

Alternatively or additionally, intermediary 106 may store the entiremodified pages, rather than customization definitions.

Transparency

A particular feature of some embodiments of the invention is that nospecial software and/or actions are required by the authorized user.Alternatively or additionally, no changes are required in web server110.

In some cases the “proxy definition” field in the browser may need to beupdated. For instance, if the HTTP intermediary is a “forward proxy” the“proxy definition” in the browser may have to be defined. In othercases, for example if HTTP intermediary 106 is a “reverse proxy”, a“transparent proxy” or an HTTP server, there is no need for updating the“proxy definition” in the browser.

Optionally, there is no need to install any software at the client side,except a suitable browser such as Microsoft Internet Explorer orMozilla. Optionally, there is no need to for any plug in or clientapplications. Optionally, there is no need for authorization forautomatic installation of an ActiveX or an active content that requiresuser authorization in order to be installed. Optionally, it is assumedthat default security settings are provided. Otherwise, JavaScript asdescribed below in the examples may require a non-standard userauthorization in order to be allowed. However, in an exemplaryembodiment of the invention, no changes are needed or desired on themachine used by the authorized user, so that tools which do not requiresuch changes can be used.

In an exemplary embodiment of the invention, the editing provided by theWeb browser is further transparent in the sense that it is a WYSIWYGtype editing in which a user is not required to guess what the resultsof his editing will look like.

Document Modification

As noted in FIG. 2 (206) the proxy sends authorized users documents thatwere modified by the proxy. This modification allows the document tobecome editable. In some embodiments of the invention the documentbecomes editable, i.e. in edit mode, after the authorized user selects abutton that the proxy added to the page, or some other trigger, forexample as described below with respect to authorization. In someembodiments, the page is not modified by the proxy as the page isgenerated to be suitable for customization. In addition the proxy adds abutton or some other trigger to allow the user saving the editing done.The button used for saving the document is optionally the same buttonthat allowed the document to become editable. Optionally, the textand/or the image of the button change.

Optionally, the proxy adds to the document two client side active codes:a first active code that is executed before editing starts, and a secondactive code that is executed upon termination of editing. These twoactive codes are optionally callbacks of the above button(s), and inparticular may be JavaScript code or another type of client side code,such as JAVA or Active X. Different types of client side code havedifferent levels of security requirements and different levels orefficiency and these levels may serve to decide about selecting betweenthem. In an exemplary embodiment of the invention, where the second codedetermines by detecting changes what editing has been performed by theauthorized user, the first code optionally may copy all data neededabout the page and its content before it makes it editable.

Optionally, setting elements to being editable is automatic on loading.Alternatively, it may require user command (e.g., selection of abutton).

Transforming the page to editable mode is optionally selective, forexample by skipping certain elements in the page. This selection isusefull for preventing the proxy-added elements from being edited. Tofacilitate this selection, those elements are optionally marked, forexample by unique names, or attributes to distinguish them.Alternatively or additionally, the added elements are contained in aspecial element.

Optionally, the client-side code recognizes if such added elements weremodified and if so, it undoes the changes.

The second active code, activated upon ending the editing, optionallysends the final result directly to intermediary 106 (e.g., for storagetherein or for performing a comparison thereon). Alternatively, thechanges themselves are sent. Optionally those changes are processedbefore they are sent. Optionally processing the changes include addingrules and/or definitions, for instance by using a dialog box, orautomatic generation of rules (which may be performed or supplemented onat intermediary 106).

In an exemplary embodiment of the invention, changes in the document arefound using recursion or a hierarchical comparison. The tree of elementsin a page is traversed and a current value is compared to a value savedby the first active code. Upon termination of finding the changes thesecond active code can send the information, such as an identificationof changes or definitions directly to the proxy, or alternatively open adialog-box, which will allow adding or modifying customizationdefinitions or changes before sending to the proxy.

FIGS. 3A and 3B are a showing of a display used for configurationsettings, in accordance with an exemplary embodiment of the invention;and in particular illustrates such a dialog-box (340). FIG. 3A shows aweb page (310) sent to an authorized user, which page was modified bythe proxy. The modification includes adding buttons, such as, “edit”,and “save”. After the authorized user selects the “edit” button, the webpage becomes editable. FIG. 3A shows the page after the user alreadystarted editing the page. Dialog-box (340) is open and the authorizeduser is in the middle of translating the word “Status”. An original text(320) will be translated using a new text (321) (in Hebrew). A field inthe original window which is edited (containing the word “Status” inHebrew) (319), is surrounded by squares and a special frame. FIG. 3Bshows everything shown in FIG. 3A with arrows and explanations. Forexample, selecting the “edit” button (312) makes the page editable;Selecting “OK” button (320) saves the transformation; a reference 326points to alternative translations.

In an exemplary embodiment of the invention, the page has an earliercustomization definition applied to it. Optionally, this customizationis applied prior to intermediary 106 providing the page. Optionally,when the changes are detected by the second active code, the user isnotified of the previous existing changes. Optionally, a button or othermeans is provided for the user to undo the changes. Optionally, theprior customization rules are shown to the user for acceptance oroverriding. Optionally, a user can request to apply definitions ofanother page to the current page. In one example, a user definescustomizations for a web site and then these customizations areassociated with other pages (e.g., in a hierarchal or object-orientedinherence manner).

Optionally, other methods of reaching the dialog box or information areprovided in one example, a user can view a list of definitions and thenopen a dialog box from such a list. In another example, when a mouse isbrought over a change, a tool tip with the old change and optionally abutton (or the tool tip may be clicked) to open the dialog, is provided.

Optionally, customizations are defined for a single user or subset ofusers. Optionally, the customizations are defined by the target userhimself, for example, rearrangement of the web page.

Exemplary Application

A usefull application of some embodiments of the invention is replacingwords in a page or document, received by the authorized user, by otherwords, for example for performing static translation. An authorized usermay also want to use a translation proxy like WizTom (www.wiztom.com),and some embodiments of the invention will allow him to performtranslations using a WYSIWYG user interface in the client browserwithout loading any other software.

In an exemplary embodiment of the invention, after the changes arecompleted by the user, the user is presented with a dialog box thatincludes input fields containing the (original) first text and the(replacement) second text. Optionally, the replacement text is generatedon the fly by accessing a machine translator. Optionally, there arespecial codes or elements that if inserted by the user editing the page,indicate to the code that data should be generated. For example, aspecial code may be used to indicate that a nearby word should beedited. The authorized user can change the texts in the dialog box, forexample, allowing a user to reformat, make changes and/or review machinetranslation results. Optionally, the transformation will be executedwhen an exact match to the first text is found.

In another embodiment of the invention the match does not have to beexact. The match for instance can be based on a regular expression or ona case-insensitive match, or any other approximate match chosen by theauthorized user using the dialog box, for example using approximatematching methods as known in the art.

FIGS. 4A-4C show a sample web page before, during and aftertransformation, according to an exemplary embodiment of the invention.In FIG. 4A the original unmodified page is shown. It includes, forexample, an advertisement (430), a “Search by Personal Details” (440),and a “Search by Location” (450). FIG. 4B shows the page in FIG. 4Adisplayed to an authorized user. In FIG. 4B the original page wasmodified by the intermediary. For example, buttons 410 were added, andalso the elements of 420. The buttons added are used by the authorizeduser to define customizations. FIG. 4C shows the page as presented to anend user after customizations were applied to the page of FIG. 3A. InFIG. 4C words were translated from English to Hebrew. For instance inFIG. 4A a plurality of elements 442, 444, and 452 are in English, and inFIG. 4B they are in Hebrew. Also the orientation of elements, forexample 440, 450, 442 were changed from left to write in FIG. 4A toright to left in FIG. 4C. The orientation of advertisement 430 was notchanged by the customizations; however the advertisement was replaced byanother advertisement.

Input

In the input field of the replacement text, the authorized user isprovided with a plurality of existing alternatives, instead of typingtext or editing the existing text. The various alternatives may bepresented, for instance, as a “selection-box”, or as a “pull-down”, oras a “pop-up”, or by other ways allowing choosing from severalalternatives. Optionally, these alternatives are provided by the userhighlighting a word and selecting a control added by the proxy.Optionally, the alternative choices are provided from an output of analgorithm applied to the (original) first text. The algorithm may beusing a dictionary or a “machine translator” that translates from onelanguage to another language. Optionally, a translation memory whichincludes previous translations of the word as used by a same user orother users, for this or other sites, is used to select alternatives.Optionally, the translation is shown in context as used previously.Optionally, a translation memory is used to foster parallel translationof a web site by multiple users and/or to enforce standard andconsistent translation. Optionally, saving replacement text suggested byusers can be used to create the replacement text alternatives.

In an exemplary embodiment of the invention, these methods of inputallow users to translate documents without typing. The document can bechanged to an editable state, for example, by selecting a button,marking a word, delete a word (i.e. to replace it with a word of zerolength characters), and press a button that opens the dialog-box. In theopened window, the original text will appear, and instead of the newtext, an empty field will appear. With this method of selection, a usercan choose the most suitable translation for the original word fromseveral translations presented. Alternatively, a user can look atvarious translations that other users provided for the original text,and choose one of them. Optionally, translations are provided by usersof the content. Thus, an authorized user can review suggestedtranslations by users and then accept these translations and make themthe formal translation of the term. Optionally, not all users of a pageare considered authorized to make suggestions. Optionally, theauthorized user only needs to end the work at the dialog-box (bypressing a suitable button, or in some other way), to accept all thesuggestions made.

In some embodiments of the invention, if the code which generates thedialog-box is sent to the browser, as part of the original document, thecode cannot include the various translations or the translation memory,because the code was generated before the user performed the changes inthe document and the required translations are not known. Optionally,the dialog box sends the original text to a proxy or suitable server,and receives from the proxy as an answer the various alternatives fortranslation. Optionally, the transmission method is XmlHttp used byJavaScript executing on the client computer

Additional Transformation Examples

Some embodiments of the invention are useful for any change in thedocument, including but not limited to, design change (for instanceemphasizing a word), RTL orientation change and DHTML(CSS effects, andmany other transformations. The same inventor, Marmor, describes RTLorientation changes in U.S. Pat. No. 6,601,108. Some embodiments of theinvention are used for defining areas in the documents as candidates fora transformation that will be performed on them when they are passingthrough the proxy. In another example, what is defined is one or moreproperties of any such transformation. For example, an area (e.g.,section of the document) may be marked for phonetic translation(translating a name according to a sound and without keeping theoriginal meaning), or Machine Translation into a different language ofits own. Different parts may have different languages for source ortarget translation associated with them. Similarly, two or more ofphonetic and static and/or machine translation may be assigned for someareas.

Supposing for example the translation of an invoice, having fixed titlesand text labels (such as “Name:”, “Price:”, “VAT:”), and also dynamicvalues which include numbers and don't need translation, and names (suchas “John”, “David”) that require phonetic translation. There are toolsthat perform each of those tasks separately. For instance, Google(http://www.google.com/machine_translation.html) and Babel-Fish(http://babel.altavista.com/) include proxies that are able to performmachine translation on content passing through that proxy. The problemis that if the invoice includes the word “Bill” (from “billing”) and aname of a person “Bill”, machine translation may translate both as“billing”, and a phonetic translation may translate both as personnames. Therefore, in accordance with an embodiment of the invention, itis useful to limit each translation to a specific spatial or logicalcontext (e.g., based on position or based on nearby or includingelements) in the page.

In an exemplary embodiment of the invention, the dialog box includes aninput field that describes such a context. An exemplary suitablelanguage to describe context in a web page, is XPath, which is includedin the XSLT language. The language was invented for performingtransformations on XML, but can be used also for HTML.

It should be noted that many users may find it difficult to createexpressions in this language. In an exemplary embodiment of theinvention, the downloaded code (or the proxy, e.g., upon request by thecode), will generate an expression corresponding to the location of theselected/edited word. Optionally, a user is limited to accepting or notaccepting the use of a context expression. Alternatively oradditionally, a user can change the initial expression to be moregeneral or less general, which can be simpler than creating thisexpression from scratch. Optionally, a button (or other control) isincluded which allows a user to ask the code to mark the parts of thedocument which are defined by the current XPath expression.Alternatively or additionally, a user can mark areas for the code toconvert into an XPath expression. Marked areas can be highlighted invarious ways, such as, blinking and/or coloring.

In an exemplary embodiment of the invention, a testing feature isprovided (“Preview”), in which when a user make a general definition,such as an XPath expression, the user can apply the current definitionsto a page and see the results, optionally with changes marked.Optionally, this is provided by adding a button which is used to testthe existing definitions. Alternatively or additionally, such a buttonis used to apply the definitions to a different page, for example, bysaving the definitions on the intermediary and then applying them whenrequesting a different page. Optionally, a control for browsing and/orsaving such definitions is provided by intermediary 106. Optionally, auser can temporarily turn off (or on) one or more definitions, todetermine their effect.

In another method of context definition, a context is defined by textthat appears near the button, for example HTML commands as viewed as atext file (e.g., “value=“OK” can serve as a context).

In another method of context definition, spatial position on a displayis used to identify a matching of text labels in the HTML file andbuttons or areas on the screen which can/should be modified.

Exception Definition

Optionally, additional input fields that may be included in thedialog-box (or in another interface method) are input fields that limitthe execution of the transformation not to a specific context in a page,but also to particular pages. One example is the TITLE of the page (thetext between the “<TITLE” and the “</TITLE>” tags), or the internalheader of the page (e.g. the text between the first “<H1>” and “</H1>”tags of the page). Another such input field will include the address ofthe page, or parts of that address (for instance the hostname or theport). The initial value is optionally taken from the address of thepage the user modified. Optionally, the user can change the value ofthat field and/or to check/uncheck a checkbox near that field thatindicates whether to limit the transformation to that page.

In an alternative embodiment, a user can define the value of this fieldas a regular expression and not necessarily an exact value. Optionally,this is a default condition, with wild-card characters being recognizedautomatically.

Additional Input

Input not directly related to the desired transformation may be providedas well. For example, such input may include the name of the authorizeduser, parameter values of the request causing the page generation (forinstance HTTP-GET-parameters or HTTP-POST-parameters), time of change, ausage counter, values of HTTP cookies, Age (of the document in seconds),Server (e.g. Apache/2.0.51), Content-Encoding (for compression),Content-Language (the language of the document, such as en, fr and he),Content-Length, Content-Type (e.g. text/html, image/gif), Expires (forcaching purposes), Last-Modified and any other data included inHTTP-headers of the request or in the body of the request.

In an exemplary embodiment of the invention, cookies or otherinformation are used to define if to apply the transformations at auser. In an exemplary embodiment of the invention, if a user (regularuser) sends a request and has a certain cookie or HTTP headerinformation, a modified page is provided. The modification may depend onthe parameters provided by the cookie header or other method.

Additional Transformations

Additional transformations can be carried out by a transformation-proxyas described herein (e.g., intermediary 106). In accordance with anexemplary embodiment of the invention a web user interface, in a WYSIWYGway, making use of the internal editing capabilities of browsers. Onesuch transformation, of a type described in U.S. Pat. No. 6,601,108 bythe same inventor, reverses the main direction of the document (or partsof it), and can be used for languages such as Hebrew and Arabic. Insuitable browsers, because the internal editing capabilities of browsersinclude support for direction change, such transformation can be definedby entering into an editing mode, marking the part that needs change ofdirection, performing the change by the browser (for instance by using a“direction” button), and saving (or entering a dialog-box). The methoddescribed above regarding comparing the document before and afterediting allows the code to find rapidly the change, and to create asuitable transformation rule (customization definition).

Area Definitions

In an exemplary embodiment of the invention, areas can be defined in adocument, also without actually making changes (which can be discoveredby comparison). In an exemplary embodiment of the invention, areas aredefined using an ability of a client-side-active-code to identify whichareas on the display screen are marked, and to open a dialog-box (or tosubmit directly a transformation rule for those areas) immediately uponending the editing or upon pressing a suitable button. Thus,customizations definitions can be defined even if nothing was changed inthe document and only areas in the display screen were marked). In anexemplary embodiment of the invention, areas are used to definecustomization definitions such as “translate text in these areas byphonetic translation” or “translate text in these areas byMachine-Translation”, as described above. A hierarchy and/or order maybe defined between overlapping areas, for example by providing thedefinitions with an ordinal number. As noted above, areas may be spatialand may be logical, for example, based on a semantic analysis of adocument.

Non-Standard Editing

In some cases, there may be a desire to provide the user with specialediting software for one of the elements included in a page. It may beundesirable to provide such software at the client side for one or moreof the following reasons: a) dependency on software the user has toinstall and might not be able to; b) it is not known whether thatsoftware can run on the computer platform the user uses; c) the usermust save the element as a file in his computer; d) the user mustmanually activate the software; and e) the user has to submit the resultback to the HTTP-intermediary.

In an exemplary embodiment of the invention, a combination of aremote-display, and a viewer that is written as client side active code,is provided. The editing software is activated at the HTTP-intermediaryside (e.g., on the same computer or on a computer connected to it) andthe user accesses the software as if it is running inside its browser.This is achieved by using a virtual display that the HTTP-intermediaryproduces, such as VNC or RDP, running the software on it and submittinga viewer, that can be used as a client of the virtual display, to thebrowser. The viewer is optionally written in a language that will permitit to automatically run on the browser, without the need to install anyplug in, and without any confirmation from the user, for example, aclient-side-active-code, such as, Java. Alternatively or additionally,the software is connected to a virtual device driver and generatesscreen commands which are transmitted to a viewer at the user'scomputer, for example, as HTML display commands. Various types of remotedisplay servers are known in the art, including X11, for example.

In an exemplary embodiment of the invention, the process of the editingsoftware is linked to the page being edited, for example by intermediary106 passing the required filenames to the software. Optionally, acallback, hyperlink or watch is attached to the object which requiresthe editor, so that the intermediary can be informed when executing theeditor is required.

In some embodiments of the invention it is noted that a standard viewerand/or the editing software and/or the virtual display used to displayit may include many features that are not relevant to such asremote-display, and may confuse the user. In addition certain featuresmay be dangerous for security, and serve as a breach of security. Forinstance, the user can use a dialog-box of “File->Open” to investigatethe content of the disk on it the editing program runs. By using“File->Save-as” the user might change the content of the disk. The usermay also use menus and an interface of the window-manager of the virtualdisplay to breach security. Optionally, such risks are reduced orprevented by limiting parts of the user interface of the editing programand of the window-manager, or even disabling the window-manager.Optionally, mouse clicks on masked areas of the interface will not beregistered. Optionally, only a “start” button and an “end” button areacceptable. In an exemplary embodiment of the invention, the editingsoftware is open source software whose source code is modified.Alternatively or additionally, the software is executed under anemulation, such as WINE, which is optionally used to provide thesecurity functions. For example, by using capabilities of WINE access tosome features of the software can be denied. Alternatively oradditionally, the software is executed in a CHROOT mode in which thesoftware is restricted in its access to a file system. Alternatively oradditionally, low privilege user settings are provided for the software.

Other Uses

Although the present invention has been described with reference to HTTPcontent such as HTML pages or XML pages, the present invention appliedto other document formats and markup languages as well, in particulartagged document formats. For example, such other markup languagesinclude, but are not limited to, Extensible Markup Language (XML),Vector Markup Language (VML), Virtual Reality Markup Language (VRML),Dynamic hypertext Markup language (DHTML), and Extended Markup language(XHTML). An example of other documents formats includes, but is notlimited to a Postscript Document Format (PDF), Java applets, andMacromedia Flash (also known as Shockwave, also known as ActionScript).

As used herein, the term HTTP includes HTTPS and other derivatives. Theterm HTML as used herein includes derivatives, such as DHTML and XHTML.

In an embodiment of the invention other protocols than HTTP may be usedto retrieve web pages. Thus, the use of HTTP is not required by theinvention. The browser (or client processor) must simply understand thelanguage of the inserted button and inserted client side active code andthe protocol they invoke such as, but not limited to, FTP or WTP(Wireless Transaction Protocol).

As used herein an HTTP intermediary includes a range of devices thatinteract with the HTTP protocol, including a proxy.

It should be noted that the functionality of intermediary 106 may bedistributed among several computers, including the client computer andthe server. In particular, editing, detecting of changes, generation ofdefinitions and application of definitions may be concentrated ordistributed. In some, possibly less secure and/or user friendlyembodiments, no intermediary is provided, instead a translation softwareis installed at the client or at the server or at another intermediatecomputer. Optionally, the editing is provided by the web server, forexample to allow a site owner to edit his web pages.

The above description has focused on translation. However, there areother reasons for customization. In one example, users may desire topersonalize their experience. Optionally, when a customization is madeit refers to a tag associated with an edited object. For example, thecustomization definition might be that a tag of “date information” is tobe deleted or repositioned.

Authorization

In some embodiments of the invention, not all users are authorized tomake change sin a page. Additionally, some changes may require specialauthorization. In an exemplary embodiment of the invention,authorization is by identifying an IP used by the user. Alternatively oradditionally, authorization is by providing a password or special codewhen requesting a page. Optionally, the page is requested via an HTMLinterface which requests a user and password (e.g., executing atintermediary 106) and then retrieves the requested page, or allowsselecting the page form a list of via web server 110 (in a normalmanner, except that intermediary 106 modifies the page) In anotherexample, a user makes a second connection to intermediary 106 (or server110, if it takes part in the process) which is used for authenticationand/or passing instructions.

In another example, an active logo button is attached to the page in anycase when it passes through intermediary 106 and a user can click on thelogo button to log-on and/or request editing and saving.

It is noted that in general security is not provided at the client sideas client side code is generally easy to circumvent and is providedmainly to prevent inadvertent changes. Optionally, a stronger securityis provided by client side code, for example encryption.

How Changes in Document Are Embodied in Document

In an exemplary embodiment of the invention, changes in the documentsare provided by defining definitions to be applied when a page passesthrough intermediary 106. Alternatively, the page or parts thereof maybe replaced. Alternatively, web server 110 may be notified of changes.

Optionally, customizations are also applied to code in a page.Optionally, only quoted text is changed. Alternatively or additionally,input and/or output objects are changed, as described in the abovepatent by Marmor. This may be useful, for example, for receiving andconverting and/or translating input from a user. Optionally, calculatedexpressions that should be transformed are captured by wrapping. In oneexample, the output of a document write command is captured andoptionally modified. Optionally, the wrapping is by replacing thecommand in the script with a second command that first generates theproposed output, then applies the customization rules and then displaysthe output.

Optionally, the page is not directly modified by intermediary 106;rather, a script for the changes to be applied is attached to the page.The script may include the changes or may read the changes from a remotelocation.

General

The present invention has been described using non-limiting detaileddescriptions of embodiments thereof that are provided by way of exampleand are not intended to limit the scope of the invention. It should beunderstood that features described with respect to one embodiment may beused with other embodiments and that not all embodiments of theinvention have all of the features shown in a particular figure ordescribed with respect to one of the embodiments. It is noted that someof the above described embodiments may describe the best modecontemplated by the inventors and therefore include structure, acts ordetails of structures and acts that may not be essential to theinvention and which are described as examples.

While the above description has focused on methods, it is meant to alsoencompass apparatus for carrying out the invention. The apparatus may bea system comprising of hardware and software. The apparatus may be asystem, such as, programmed computers or a network appliance. Theapparatus may include various computer readable media having suitablesoftware thereon, for example, diskettes and computer and/or flash RAM.

Structure and acts described herein are replaceable by equivalents,which perform the same function, even if the structure or acts aredifferent, as known in the art. Therefore, only the elements andlimitations as used in the claims limit the scope of the invention. Whenused in the following claims, the terms “comprise”, “include”, “have”and their conjugates mean “including but not limited to”.

1. A method of defining customization for electronic content retrievedover an electronic connection, comprising: (a) retrieving electroniccontent from a remote server to a local client, through an intermediaryapparatus; (b) editing the content at the local client by a user using aWYSIWYG editor, wherein said editor is a standard software used fordisplaying of content and wherein said editing does not requireinstallation of software requiring user authorization; (c) automaticallygenerating at least one customization definition based on said editing,said customization definition suitable for automatic applying to saidcontent; and (d) modifying data provided at a later time according tothe at least one customization definition, wherein the intermediaryapparatus supports the editing at the local client.
 2. A methodaccording to claim 1, wherein said retrieving comprises retrieving atagged data file.
 3. A method according to claim 2, wherein saidintermediary is an HTTP intermediary.
 4. A method according to claim 3,wherein said tagged data file is in a self-describing language.
 5. Amethod according to claim 4, wherein said language is a hyper-textmark-up language.
 6. A method according to claim 3, wherein said editorcomprises an internet browser.
 7. A method according to claim 3, whereinautomatically generating comprises detecting changes in said contentcaused by said editing, after said editing is preformed.
 8. A methodaccording to claim 7, wherein detecting changes comprises detectingchanges using a hierarchical comparison of the electronic content beforeand after the editing.
 9. A method according to claim 3, wherein saidintermediary comprises a proxy.
 10. A method according to claim 3,wherein the intermediary modifies the retrieved content to allow atleast one of said editing of the content at the local client or theautomatically generating of the at least one customization definition.11. A method according to claim 10, wherein said modifying of theretrieved content comprises marking at least some of said content aseditable.
 12. A method according to claim 10, wherein said modifying ofthe retrieved content comprises adding at least one control to saidcontent.
 13. A method according to claim 10, wherein said modifying ofthe retrieved content comprises adding at least one client side codemodule to said content.
 14. A method according to claim 3, whereinautomatically generating the at least one customization definition basedon said editing comprises defining a spatial area to be customized. 15.A method according to claim 3, comprising overriding at least oneautomatically generated customization definition by said user.
 16. Amethod according to claim 3, wherein said editing comprises editingwithout typing human understandable words.
 17. A method according toclaim 3, wherein said editing comprises editing by selection amongchoices.
 18. A method according to claim 3, comprising manually definingat least one parameter of a customization definition.
 19. A methodaccording to claim 18, wherein said manually defining comprises definingdifferent types of translation for different parts of said content. 20.A method according to claim 15, wherein said overriding comprisesrequiring an exact match of an element of said content to a definition,for a customization to be applied.
 21. A method according to claim 15,wherein said overriding comprises allowing a match other than aone-to-one match to a definition, for a customization to be applied. 22.A method according to claim 3, wherein a customization definition isdefined by a context in said content.
 23. A method according to claim22, wherein said context is an expression defining elements in saidcontent to be part of the context.
 24. A method according to claim 23,wherein said expression is a hierarchical expression.
 25. A methodaccording to claim 23, wherein said expression is an XPath or XPath-liketype expression.
 26. A method according to claim 25, wherein saidexpression is generated automatically.
 27. A method according to claim26, wherein said expression is generated in response to an editingactivity.
 28. A method according to claim 26, wherein said expression isgenerated in response to a marking by a user.
 29. A method according toclaim 22, wherein a context is defined based on a spatial location,during a display of the content, of a label associated with an elementto be customized.
 30. A method according to claim 29, wherein anassociation of a label and an element is identified using abrowser-internal script which finds spatial positions of the labels andspatial positions of nearby elements.
 31. A method according to claim 3,wherein said intermediary authorizes said user to perform said editing.32. A method according to claim 1, wherein the at least onecustomization definition is passed from said clients to saidintermediary. 33-34. (canceled)
 35. A method according to claim 1,wherein modifying data provided at a later time comprises modifyingcontent requested by a second user.
 36. A method according to claim 35,comprising deciding at least one property of said modifying based oninformation associated with a request by said second user.
 37. A methodaccording to claim 36, wherein said deciding comprises deciding if toapply a customization definition.
 38. A method according to claim 36,wherein said deciding comprises examining a cookie at said second user.39. A method according to claim 3, wherein modifying data provided at alater time comprises modifying dynamic content including at least oneelement whose content changes over time.
 40. A method according to claim1, wherein said modifying of content provided at a later time comprisesdetermining a context.
 41. A method according to claim 40, whereindetermining a context comprises evaluating an XPath or XPath-likeexpression.
 42. A method according to claim 40, wherein determining acontext comprises determining spatial positions of labels associatedwith an element to be modified based on the customization definitions.43. A method of editing content, comprising: (a) requesting content froma first location; (b) executing an editing application at a secondlocation; and (c) carrying out the editing at a third location, using aviewer for viewing said editing application, without installing softwareat the third location other than said viewer.
 44. A method according toclaim 43, wherein said second location comprises an HTTP-intermediary.45. A method according to claim 44, wherein said viewer comprises abrowser.
 46. A method according to claim 44, wherein said editingapplication is automatically executed when a user at said third locationattempts to edit an element suitable for editing by said application.47. A method according to claim 44, wherein said application is executedin a manner which at least partially protects said HTTP-intermediaryfrom access by said user.
 48. An HTTP intermediary, comprising: (a) anHTTP connection to a server; (b) an HTTP connection to a user; (c) apage modifying module operative to add at least one of code and controlsto a page requested by said user from said server, said code or controladapted to facilitate at least one of editing and customizationdefinition.
 49. An intermediary according to claim 48, comprising a pagetransformer adapted to modify retrieved pages on the fly based on savedcustomization definitions.
 50. A browser having downloaded thereto atleast one client side code, said client side code adapted to at leastone of allow editing of content and determine changes due to editing ofcontent.
 51. A method according to claim 34, wherein modifying dataprovided at a later time according to the at least one customizationdefinition comprises modifying by an intermediary.
 52. A methodaccording to claim 34, wherein modifying data provided at a later timecomprises modifying data provided by the remote server.
 53. A methodaccording to claim 34, wherein modifying data provided at a later timecomprises modifying data identical to the electronic content whoseediting resulted in the customization definition.
 54. A method accordingto claim 34, wherein modifying data provided at a later time comprisesmodifying data different from the electronic content whose editingresulted in the customization definition.